home *** CD-ROM | disk | FTP | other *** search
/ Windows News 2010 Summer - Disc 1 / WN_Ete2010_CD1.iso / Onglet5 / Weezo / Weezo setup.exe / {code_appDir} / www / js / photo1Layout4-src.js < prev    next >
Text File  |  2010-05-19  |  6KB  |  158 lines

  1. var dOpt=INERTIA+CURSOR_HAND+SCALABLE+ROT;
  2. var tnImgW={}; // Max loaded width
  3. var tnImgSel={}; // Currently selected image
  4. // Hide image loading to avoid flickers
  5. var cacheId,cacheImg=new Image(); cacheImg.onload=function(){if(dgi(cacheId)) dgi(cacheId).src=cacheImg.src} 
  6.  
  7. // Adjust frames
  8. function winResized(){
  9.     alignBottom(dgi("noFileDiv"),winMe,15);
  10.     alignBottom(dgi("thumbnailsFrame"),winMe,10);
  11.     if(dgi('actionsPanel').style.display!='none' && treeDivId) alignBottom(dgi(treeDivId),dgi("thumbnailsFrame"),0);
  12. }
  13.  
  14. /**
  15.  * Generate thumbnails layout
  16.  * files: array of files (Cf. )
  17.  * tnw: thumbnails max width
  18.  * tnh: thumbnails max height
  19.  */
  20. function filesLayoutResource(files,tnw,tnh){
  21.     var f,u,i,o,r,x,y,p=Math.ceil(tnw/10),names='',mw,mh;
  22.     dgi('noFileDiv').style.paddingBottom=(tnh)+'px';
  23.     dgi('noFileDiv').style.paddingRight=(tnw)+'px';
  24.     alignBottom(dgi('noFileDiv'),winMe);
  25.     tnImgW={};tnImgSel={}
  26.  
  27.     fL.noLeftClickCM=fL.noTooltip=1;
  28.     fL.previewOnCM=layout4Preview;
  29.     //fL.contextMenuExtra=layout4ContextMenu;
  30.  
  31.     r=dgi('noFileDiv').offsetWidth/dgi('noFileDiv').offsetHeight;
  32.     mh=100*Math.sqrt(tnw*tnh*files.length/0.7*r);mw=mh*r;
  33.  
  34.     mw=Math.max(0,Math.min(100,mw/dgi('noFileDiv').offsetWidth));
  35.     mh=Math.max(0,Math.min(100,mh/dgi('noFileDiv').offsetHeight));
  36.  
  37.  
  38.     o='<div id="filesTable" style="margin-right:'+tnw+'px;height:100%;width:100%;position:relative">';
  39.     for(i=0;i<files.length;i++) {
  40.         f=files[i];
  41.         r=20*Math.random()-10;
  42.         x=50+mw*Math.random()-mw/2;
  43.         y=50+mh*Math.random()-mh/2;
  44.         u='<div id="_id'+i+'" style="position:absolute;width:'+(f[16])+'px;height:'+(f[17])+'px;left:'+x+'%;top:'+y+'%;-webkit-transform:rotate('+r+'deg);-o-transform:rotate('+r+'deg);-moz-transform:rotate('+r+'deg)" class="photoFrame" onmousedown="fL.sDF(this,dOpt)" ondblclick="view(\'id'+i+'\')" onmouseup="fL.cm(this,event)" onmouseover="tooltip(this,layout4TC)">';
  45.         u+='<img id="img'+i+'" style="width:'+((phpBrowser=='ie')?100:90)+'%;height:86%;margin:5%" onload="layout4Loaded(this)" aalt="'+f[15]+'" onmousedown="fL.sDF(this.parentNode,dOpt)">';
  46.         u+='</div>';
  47.         o+=u;
  48.         names+='<div id="id'+i+'" style="display:none">'+f[2]+'</div>';
  49.     }
  50.     zI=i;
  51.     return o+names+'</div>';
  52. }
  53.  
  54. // Function called on image resize completed: update src if larger image
  55. function resizeComplete(){
  56.     var i,n,obj;
  57.     obj=dd.obj;
  58.     n=obj.div.getElementsByTagName('IMG')[0];
  59.     i=n.id.substr(3)
  60.     if(tnImgW[i]>obj.w) return;
  61.     tnImgW[i]=obj.w;
  62.     n.src=wl.extImageSrc(fL.dir+'/'+fL.files[i][2],obj.w,obj.h);
  63. }
  64.  
  65. // TN img load queue processing
  66. var layout4State;
  67. function layout4Load(i){
  68.     layout4State[i]=1;
  69.     var n=dgi('img'+i);
  70.     if(!n) return;
  71.     if(n.tagName!='IMG') n=n.firstChild;
  72.     n.src=n.getAttribute('aalt');
  73. }
  74. function layout4Loaded(n){
  75.     var l=fL.files.length;
  76.     n=n.parentNode;
  77.     n.style.visibility='visible';
  78.     for(i=0;i<l;i++) if(!layout4State[i]) {
  79.         layout4State[i]=1;
  80.         if(phpBrowser=='ie') setTimeout('layout4Load('+i+')',1); else layout4Load(i);
  81.         return;
  82.     }
  83. }
  84.  
  85. // Set tooltip content (Ctrl hint)
  86. function layout4TC(){return '<img src='+resizeHintImg+'>'}
  87. function layout4STB(id){dd.elements['_'+id].minimizeZ()}
  88.  
  89. // Before tn gen
  90. function filesListBeforeDraw(files,tnw,tnh){}
  91. // After tn gen
  92. function filesListAfterDraw(files,tnw,tnh){
  93.  
  94.     //alert(dd.obj.id.subtr(3))
  95.     layout4State={}
  96.     for(var i=0;i<Math.min(10,fL.files.length);i++) layout4Load(i);
  97. }
  98. function preDrop(){
  99.     if(dd.obj.x+dd.obj.w/2<actualOffsetLeft(dgi('noFileDiv')) || dd.obj.y+dd.obj.h/2<actualOffsetTop(dgi('noFileDiv'))) dd.obj.elasticTmp=1;
  100.     
  101.     // If selected image is moved, don't reduce it at next image select
  102.     if(tnImgSel && tnImgSel.nid==dd.obj.id.substr(3) && dgi('ctrlGroup')) tnImgSel.moved=1;
  103. }
  104. // onclick
  105. function layout4Preview(id){
  106.     var obj,f,nid=id.substr(2),s=previewSize,pnid=tnImgSel.nid;
  107.     
  108.     // Remove controls and move previous image back to position
  109.     if(pnid) {
  110.         f=fL.files[pnid];
  111.         obj=dd.elements['_id'+pnid];
  112.         layout4InsertControls(obj.div,0);
  113.         if(pnid==nid || !tnImgSel.moved){
  114.             obj.noLaunch=1;
  115.             if(tnImgSel['x']!=undefined) layout4PreviewAnim(tnImgSel.nid,tnImgSel.x,tnImgSel.y,f[16],f[17],(obj.angle!=0)?obj.angle:tnImgSel.angle,7,0);
  116.             else layout4PreviewAnim(tnImgSel.nid,obj.x+(s-f[16])/2,obj.y+((s-f[16])/2)*f[17]/f[16],f[16],f[17],(obj.angle!=0)?obj.angle:tnImgSel.angle,7,0);
  117.         }
  118.     }
  119.  
  120.     if(tnImgSel.nid===nid){
  121.         tnImgSel={}
  122.     }
  123.     else{
  124.         obj=dd.elements['_id'+nid];
  125.         tnImgSel={'nid':nid,'angle':obj.angle,'x':obj.x,'y':obj.y}
  126.         f=fL.files[nid];
  127.         cacheId='img'+nid;
  128.         cacheImg.src=wl.extImageSrc(fL.dir+'/'+f[2],s,s*f[17]/f[16]);
  129.         
  130.         obj.noLaunch=1; // Prevent object to be launched before/during anim
  131.         layout4PreviewAnim(nid,actualOffsetLeft(dgi('noFileDiv'))+dgi('noFileDiv').offsetWidth/2-s/2,actualOffsetTop(dgi('noFileDiv'))+dgi('noFileDiv').offsetHeight/2-s*f[17]/f[16]/2,s,s*f[17]/f[16],0,7,1)
  132.     }
  133. }
  134.  
  135. function layout4PreviewAnim(nid,dx,dy,dw,dh,da,step,sc){
  136.     var obj=dd.elements['_id'+nid]
  137.     if(--step==0){
  138.         obj.moveTo(dx,dy);
  139.         obj.resizeTo(dw,dh);
  140.         obj.rotTo(da);
  141.         if(sc) layout4InsertControls(obj.div,1);
  142.         obj.noLaunch=0;
  143.         return;
  144.     }
  145.     var mult=0.5, x=(obj.x+dx)*mult,y=(obj.y+dy)*mult,w=(obj.w+dw)*mult,h=(obj.h+dh)*mult,a=(obj.angle+da)*mult;
  146.     obj.moveTo(x,y);
  147.     obj.resizeTo(w,h);
  148.     obj.rotTo(a);
  149.     setTimeout("layout4PreviewAnim("+nid+","+dx+","+dy+","+dw+","+dh+","+da+","+step+","+sc+")",10);
  150. }
  151. function layout4InsertControls    (n,ins){
  152.     if(!ins) return removeNode(n.lastChild);
  153.     var d=D.createElement('DIV'); d.id='ctrlGroup';
  154.     with(d.style){position='absolute';top=2;left=2;}
  155.     d.innerHTML=dgi('ctrlCont').innerHTML;
  156.     n.appendChild(d)
  157. }
  158. winResized();